接下來的主題,是 Trace Code。平常除了拉 UI,最常遇到的就是找問題。發現問題,第一步就是找到事發地,接下來 4 篇會介紹我常用來找 Code 的 4 個方法,通常我都是混著用的。接下來,讓我們一個個介紹吧~
要如何快速搜尋到當前 Activity 或 Fragment 以修改程式呢?Profiler 可以幫助我們即時觀察當前頁面。
我做了一個 Demo APP,歡迎下載自行嘗試。
GitHub: https://github.com/dreambo4/NavigationDemo
首先,觀察一下頁面。SettingFragment 裡面嵌入了 SubSetting1Fragment 和 SubSetting2Fragment。
隨著頁面的切換,我們可以觀察到 Profiler 可以顯示當前的 Activity 與 Fragment。即使頁面上有多個 Fragment,也可以一併顯示。
若從 Profiler 觀察不到頁面,建議確認一下 debuggable 和 profileable 的設定
專案在預設狀況下:
不過這些設定都是可調整的
debuggable 可在 gradle 調整 true/false,用來設定應用程式是否允許使用調試工具(如 Android Studio 的 Debugger)進行調試。但這個模式只應在開發階段使用,因為它使應用程式容易受到攻擊。如果在 release 環境中啟用,可能會暴露敏感資訊和應用程式內部邏輯。
profileable 可在 manifest 調整,是 Android Q(API 29) 引入的一個 manifest 標籤,用於指定應用程式是否允許在不設置 debuggable 的情況下進行性能分析。與 debuggable 相比,profileable 更加安全,因為它僅限於性能分析,不允許調試操作。因此,它可以在 release 環境中啟用,以便進行現場性能分析而不危及應用程式的安全性。
雖然開啟 profileable 允許應用程式性能分析,但經過實測 debuggable = false, profileable = true 的情況下,雖然還是可以從 Profiler 觀察到部分資訊,但無法列出 Activity 或 Fragment。
本文介紹的由 Profiler 觀察 Activity 和 Fragment 的方法,僅限於 debuggable = true 的情況下使用。